Package Details: icecat 115.17.0-1

Git Clone URL: https://aur.archlinux.org/icecat.git (read-only, click to copy)
Package Base: icecat
Description: GNU version of the Firefox ESR browser
Upstream URL: https://git.savannah.gnu.org/cgit/gnuzilla.git
Keywords: browser esr gnuzilla web
Licenses: MPL-2.0
Submitter: None
Maintainer: figue (xiota)
Last Packager: xiota
Votes: 250
Popularity: 0.44
First Submitted: 2007-12-09 10:12 (UTC)
Last Updated: 2024-11-04 00:48 (UTC)

Dependencies (51)

Sources (10)

Pinned Comments

xiota commented on 2024-02-26 07:32 (UTC) (edited on 2024-08-08 03:44 (UTC) by xiota)

PKGBUILD has been updated. Major changes:

  • Downloads Firefox ESR and localization using the source array. Files are saved for reuse.
  • Saves freshly patched IceCat sources in a tarball for reuse.
  • Saves the PGO profile for reuse.

Notes:

  • Currently requires clang/llvm 17, which has to be built from AUR.
  • Wayland users, consider setting _build_pgo_xvfb=false. This will use xwayland-run for profiling.
  • PGO should work now, but if it doesn't and you're willing to go without, try _build_pgo=false.
  • Running out of RAM? Try adding mk_add_options MOZ_PARALLEL_BUILD=___ around line 300. Pick a value less than number of cores and free RAM in GB. For example, on a system with 8 cores, 64GB total RAM, but only 6 GB free, the value should be set to 4 or 5.
    • If a few people can confirm this is helpful, I will consider adding it as an additional option.
    • Main resource hog seems to be linking libxul.so. Leave a comment if you have a potential solution.

Having problems? Please provide details: processor make and model, number of cores, free -m, full log in pastebin, whether using AUR helper/makepkg/clean chroot, etc.

Latest Comments

« First ‹ Previous 1 2 3 4 5 6 7 8 9 .. 85 Next › Last »

figue commented on 2024-02-16 20:48 (UTC)

@texer22 I'm not sure why paru are failing to build. Can you try with devtools extra-x86_64-build ?

texer22 commented on 2024-02-14 13:48 (UTC)

Cannot build.


The error occurred in mach itself. This is likely a bug in mach itself or a
fundamental problem with a loaded module.

You can invoke ``./mach busted`` to check if this issue is already on file. If it
isn't, please use ``./mach busted file general`` to report it. If ``./mach busted`` is
misbehaving, you can also inspect the dependencies of bug 1543241.

If filing a bug, please include the full output of mach, including this error
message.

The details of the failure are as follows:

mozbuild.mozconfig.MozconfigLoadException: Error loading mozconfig: /home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/.mozconfig

Evaluation of your mozconfig exited with an error. This could be triggered
by a command inside your mozconfig failing. Please change your mozconfig
to not error and/or to catch errors in executed commands.

mozconfig output:

/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/.mozconfig: line 1: _add_options: command not found


  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mach/mach/main.py", line 397, in run
    return self._run(argv)
           ^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mach/mach/main.py", line 486, in _run
    report_invocation_metrics(context.telemetry, handler.name)
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mach/mach/telemetry.py", line 85, in report_invocation_metrics
    filter_args(command, sys.argv, instance.topsrcdir, instance.topobjdir)
                                                       ^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/base.py", line 248, in topobjdir
    self._topobjdir = self.resolve_mozconfig_topobjdir(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/base.py", line 190, in resolve_mozconfig_topobjdir
    topobjdir = self.mozconfig.get("topobjdir") or default
                ^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/base.py", line 345, in mozconfig
    return self.base_mozconfig_info["mozconfig"]
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/base.py", line 335, in base_mozconfig_info
    return self.get_base_mozconfig_info(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/util.py", line 1054, in __call__
    self[args] = self.func(*args)
                 ^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/base.py", line 320, in get_base_mozconfig_info
    sandbox._value_for(sandbox["mozconfig_options"])
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 613, in _value_for
    return self._value_for_depends(self._depends[obj])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/util.py", line 1063, in method_call
    cache[args] = self.func(instance, *args)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 625, in _value_for_depends
    value = obj.result()
            ^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/util.py", line 1063, in method_call
    cache[args] = self.func(instance, *args)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 160, in result
    resolved_args = [self.sandbox._value_for(d) for d in self.dependencies]
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 160, in <listcomp>
    resolved_args = [self.sandbox._value_for(d) for d in self.dependencies]
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 616, in _value_for
    return self._value_for_depends(obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/util.py", line 1063, in method_call
    cache[args] = self.func(instance, *args)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 625, in _value_for_depends
    value = obj.result()
            ^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/util.py", line 1063, in method_call
    cache[args] = self.func(instance, *args)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 161, in result
    return self._func(*resolved_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/configure/__init__.py", line 1308, in wrapped
    return new_func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/build/moz.configure/init.configure", line 117, in mozconfig
    mozconfig = loader.read_mozconfig(mozconfig)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/.cache/paru/clone/icecat/src/gnuzilla-dbe6da400cf4f28e5e893d0acb5022e23cf3afcf/output/icecat-115.7.0/python/mozbuild/mozbuild/mozconfig.py", line 185, in read_mozconfig
    raise MozconfigLoadException(path, MOZCONFIG_BAD_EXIT_CODE, lines)
==> ERROR: A failure occurred in build().
    Aborting...
error: failed to build 'icecat-115.7.0-2': 
error: packages failed to build: icecat-115.7.0-2


Ningen commented on 2024-02-14 08:13 (UTC)

@figue Worked with 4GB+30GiB swap, will probably work for you too

real 168m38.694s user 443m5.238s sys 36m15.910s

agapito commented on 2024-02-13 23:57 (UTC)

I am not using Icecat but maybe you want to read this: https://bbs.archlinux.org/viewtopic.php?id=290946

figue commented on 2024-02-13 21:40 (UTC)

I want to apologize. _only-compile was a test and I forgot to remove it (I have a new charge in the company I work and I'm a bit busy).

I have removed _only-compile. Changed enable-lto=cross.

Would you mind to test it again? I'll test it too (I have 16 Gb RAM here with 10 GB swap, should be enough?)

xiota commented on 2024-02-13 00:23 (UTC) (edited on 2024-02-13 00:42 (UTC) by xiota)

Think it's best to add a flag so that PGO can be optional

It's already in the PKGBUILD near the beginning (lines 9-10). To disable PGO, set an environment variable: _build_pgo=false makepkg

Most Firefox-based browsers currently have PGO enabled without option to disable (eg, firefox-nightly). I suppose users who bother to build them are assumed to have the resources to do so. I tried measuring memory usage for both normal and PGO builds, and they both appear to use about the same amount of memory. In the logs, there are lines that look like:

  Parallelism determined by memory: using 128 jobs for 128 cores based on 251.5 GiB RAM and estimated job size of 1.0 GiB

On machines with different number of cores and RAM that I tried, looks like the 1 GiB/job estimate is reasonably accurate. That usage is above baseline. So a system with 16 GiB baseline usage, 32 cores, 32 GiB RAM will run out of memory with 32 jobs. This scenario would need over 48 GiB. I would allocate double the GiB as cores to be "safe".

Ningen commented on 2024-02-13 00:18 (UTC)

@figue Successfully built on my stronger pc with ~50GB swap (probably didn't need this much but previously ~30GB swap failed), not sure exactly how long it took because I had to leave it on overnight but it was still 4 hours + some. I can easily say that for any modern laptop this is still going to take over 20hrs to compile.

Think it's best to add a flag so that PGO can be optional as it won't be practical to build for most people, e.g env _PGO=true _SPEED=Y _LOCALE=en-CA makepkg -sirc

xiota commented on 2024-02-12 17:48 (UTC) (edited on 2024-02-19 12:39 (UTC) by xiota)

@rev.cressy The output folder is supposed to be created by makeicecat on line 109. However, _only-compile is an invalid variable name, which prevents the block from being run.

rev.cressy commented on 2024-02-12 16:03 (UTC)

There is no directory "output" which is mentioned in PKGBUILD on line 159

Ningen commented on 2024-02-12 14:16 (UTC)

@xiota I see... Regarding the memory usage though, I don't think there is any other option, compilation time and resources are growing more and more especially with firefox over the years, previously I used 8GB+4GiB swap for compiling icecat on lower versions, then slowly it needed to be raised to 8GB+8GiB swap, at this rate the whole system is going to be needed for compiling, maybe compiling on laptops is not going to be possible anymore haha