Package Details: icecat 115.18.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: 251
Popularity: 0.72
First Submitted: 2007-12-09 10:12 (UTC)
Last Updated: 2024-11-30 19:41 (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 .. 4 5 6 7 8 9 10 11 12 13 14 .. 86 Next › Last »

seo.disparate commented on 2023-06-09 07:25 (UTC) (edited on 2023-06-09 07:36 (UTC) by seo.disparate)

So I figured out a patch that fixes the build of mp4parse that only touches two lines (based on what exists in the current version of mp4parse):

mp4parse_macro_mul.patch
--- a/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs
+++ b/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs
@@ -3184,8 +3184,8 @@
             type Output = $output;

             fn mul(self, rhs: $rhs) -> Self::Output {
-                static_assertions::const_assert!(<$output>::MAX <= <$inner>::MAX as u64);
-                static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
+                static_assertions::const_assert!(<$output as UpperBounded>::MAX <= <$inner>::MAX as u64);
+                static_assertions::const_assert!(<$lhs as UpperBounded>::MAX * <$rhs as UpperBounded>::MAX <= <$output as UpperBounded>::MAX);

                 let lhs: $inner = self.get().into();
                 let rhs: $inner = rhs.get().into();

I also needed to change the checksum for mp4parse/src/lib.rs, as otherwise the build would fail complaining about the changed source. Thus, the entries in the PKGBUILD should look like:

...
# Produce IceCat sources
bash makeicecat

patch -p1 < "$srcdir/mp4parse_macro_mul.patch"
sed -e 's|src/lib.rs":"73114a5c28472e77082ad259113ffafb418ed602c1741f26da3e10278b0bf93e|src/lib.rs":"bded10689ddd8fd3fcb4ab01be1ecf3642691d68c3651fc4b00f3ccba67fc7cd|' -i output/icecat-102.12.0/third_party/rust/mp4parse/.cargo-checksum.json

cd output/icecat-${pkgver}
...

Naturally, one will need to add the patch to the array of SOURCES for the PKGBUILD.

seo.disparate commented on 2023-06-09 05:32 (UTC) (edited on 2023-06-09 06:03 (UTC) by seo.disparate)

I did some digging on the compile issue, and it turns out that Rust 1.70 seems to break the build, such that the code needed to be updated.

https://github.com/mozilla/mp4parse-rust/issues/406
https://github.com/mozilla/mp4parse-rust/issues/387

Looking at the error log, the build uses commit 3bfc47d9a571d0842676043ba60716318e946c06 of mp4parse which was merged in late 2021. So the fix is either to downgrade Rust, or patch the source to use a more recent version of mp4parse, or get upstream to not use the old version of mp4parse.

EDIT: I did more digging and it looks like mp4parse (and mp4parse_capi) is bundled in the firefox esr tarball with sources looking identical to commit 3bfc47d9a571d0842676043ba60716318e946c06 . I think Mozilla may have to change the ESR version to use a newer mp4parse version (assuming there is no API breaking changes)...

EDIT: I think theoretically one could patch the source with the source used in the latest version: https://github.com/mozilla/mp4parse-rust/blob/b363e1362726450bac1a4f81ef0d7a12dc51a86e/mp4parse/src/lib.rs#L3486-L3580

seo.disparate commented on 2023-06-09 04:00 (UTC) (edited on 2023-06-09 04:00 (UTC) by seo.disparate)

@unphysicalix @figue

I'm running into the same compiler error trying to compile icecat (building in a chroot):

12:21.93    Compiling mp4parse v0.13.0 (https://github.com/mozilla/mp4parse-rust?rev=3bfc47d9a571d0842676043ba60716318e946c06#3bfc47d9)
12:22.20 error[E0277]: the trait bound `u64: Mul<NonZeroU8>` is not satisfied
12:22.20     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3188:62
12:22.20      |
12:22.20 3188 |                 static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
12:22.20      |                                                              ^ no implementation for `u64 * NonZeroU8`
12:22.20 ...
12:22.20 3198 | impl_mul!((U8, std::num::NonZeroU8) => (U16, u16));
12:22.20      | -------------------------------------------------- in this macro invocation
12:22.20      |
12:22.20      = help: the trait `~const Mul<NonZeroU8>` is not implemented for `u64`
12:22.20      = help: the following other types implement trait `Mul<Rhs>`:
12:22.20                <&'a u64 as Mul<u64>>
12:22.20                <&u64 as Mul<&u64>>
12:22.20                <u64 as Mul<&u64>>
12:22.20                <u64 as Mul>
12:22.20      = note: this error originates in the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.20 note: erroneous constant used
12:22.20     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3198:1
12:22.20      |
12:22.20 3198 | impl_mul!((U8, std::num::NonZeroU8) => (U16, u16));
12:22.20      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12:22.20      |
12:22.20      = note: this note originates in the macro `static_assertions::const_assert` which comes from the expansion of the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.21 error[E0277]: the trait bound `u64: Mul<NonZeroU8>` is not satisfied
12:22.21     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3188:62
12:22.21      |
12:22.21 3188 |                 static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
12:22.21      |                                                              ^ no implementation for `u64 * NonZeroU8`
12:22.21 ...
12:22.21 3199 | impl_mul!((U32, std::num::NonZeroU8) => (U32MulU8, u64));
12:22.21      | -------------------------------------------------------- in this macro invocation
12:22.21      |
12:22.21      = help: the trait `~const Mul<NonZeroU8>` is not implemented for `u64`
12:22.21      = help: the following other types implement trait `Mul<Rhs>`:
12:22.21                <&'a u64 as Mul<u64>>
12:22.21                <&u64 as Mul<&u64>>
12:22.21                <u64 as Mul<&u64>>
12:22.21                <u64 as Mul>
12:22.21      = note: this error originates in the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.21 note: erroneous constant used
12:22.21     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3199:1
12:22.21      |
12:22.21 3199 | impl_mul!((U32, std::num::NonZeroU8) => (U32MulU8, u64));
12:22.21      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12:22.21      |
12:22.21      = note: this note originates in the macro `static_assertions::const_assert` which comes from the expansion of the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.23 For more information about this error, try `rustc --explain E0277`.
12:22.24 error: could not compile `mp4parse` (lib) due to 2 previous errors

figue commented on 2023-06-08 18:04 (UTC)

@unphysicalix I've build it 3 days ago and it was fine. Did you clean local builddir before?

unphysicalix commented on 2023-06-08 17:23 (UTC) (edited on 2023-06-08 17:23 (UTC) by unphysicalix)

Hi. icecat 102.12.0-1 does not compile anymore, 102.11.x did. Here is the error message:

4:53.05    Compiling pulse v0.3.0 (https://github.com/mozilla/cubeb-pulse-rs?rev=df4dc0288b07b865440f4c7e41ca49ca9ccffc63#df4dc028)
 4:53.07 error[E0277]: the trait bound `u64: Mul<NonZeroU8>` is not satisfied
 4:53.07     --> /home/archie/data/yay-cache/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3188:62
 4:53.07      |
 4:53.07 3188 |                 static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
 4:53.07      |                                                              ^ no implementation for `u64 * NonZeroU8`
 4:53.07 ...
4:53.08 3198 | impl_mul!((U8, std::num::NonZeroU8) => (U16, u16));
 4:53.08      | -------------------------------------------------- in this macro invocation
 4:53.08      |
 4:53.08      = help: the trait `~const Mul<NonZeroU8>` is not implemented for `u64`
 4:53.08      = help: the following other types implement trait `Mul<Rhs>`:
 4:53.08                <&'a u64 as Mul<u64>>
 4:53.08                <&u64 as Mul<&u64>>
 4:53.08                <u64 as Mul<&u64>>
 4:53.08                <u64 as Mul>
 4:53.08      = note: this error originates in the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
 4:53.08 note: erroneous constant used

...later with one more of above (in the same line of code)

 4:53.12 error: could not compile `mp4parse` (lib) due to 2 previous errors
 4:53.12 warning: build failed, waiting for other jobs to finish...

if this is only on my machine, please tell me.

figue commented on 2023-06-03 21:29 (UTC)

@AgentLoneStar007 it's weird because python-jsonschema is a makedepend. Can you try removing all build directory cache and try again?

AgentLoneStar007 commented on 2023-06-03 17:17 (UTC)

Getting this error upon attempting to install: ==> Extracting sources... -> Extracting gnuzilla-5a1894fc966840dc242110ec0459471c637a4675.tar.gz with bsdtar ==> Starting prepare()...

ERROR: This script requires Python 3 jsonschema: e.g.: 'jsonschema' from the Guix 'python-jsonschema' package 'jsonschema' from the Parabola 'python-jsonschema' package 'jsonschema' from the Trisquel 'python3-jsonschema' package ==> ERROR: A failure occurred in prepare(). Aborting... -> error making: icecat-exit status 4

figue commented on 2023-03-15 08:45 (UTC)

@earlybird what do you mean? The script downloads firefox sources from mozilla.org... Can you retry? It should be ok.

earlybird commented on 2023-03-15 07:00 (UTC)

the package can not be build failure while downloading ...

figue commented on 2023-02-18 11:21 (UTC)

@nfitzen thank you. I don't remember why I comment "ac_add_options --disable-eme" (I think because it doesn't build in some point), but I tried now and it seems to be working. I'll disable eme in the next release.